#include "pch.hpp"
#include "BinaryStream.hpp"

using namespace Engine;
using namespace Engine::Script;




BinaryStream::BinaryStream(std::basic_istream<char>& istream)
	: m_istream(&istream)
	, m_ostream(nullptr)
{}
///////////////////////////////////////////////////////////////////////////////////////////////////

BinaryStream::BinaryStream(std::basic_ostream<char>& ostream)
	: m_istream(nullptr)
	, m_ostream(&ostream)
{}
///////////////////////////////////////////////////////////////////////////////////////////////////

BinaryStream::BinaryStream(std::basic_iostream<char>& iostream)
	: m_istream(&iostream)
	, m_ostream(&iostream)
{}
///////////////////////////////////////////////////////////////////////////////////////////////////

BinaryStream::~BinaryStream()
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




bool BinaryStream::can_read() const
{
	return m_istream != nullptr;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

bool BinaryStream::can_write() const
{
	return m_ostream != nullptr;
}
///////////////////////////////////////////////////////////////////////////////////////////////////




void BinaryStream::Read(void* ptr, asUINT length)
{
	verify(can_read());
	m_istream->read(reinterpret_cast<char*>(ptr), length);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void BinaryStream::Write(const void* ptr, asUINT length)
{
	verify(can_write());
	m_ostream->write(reinterpret_cast<const char*>(ptr), length);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
